1. Field of the Invention
The present invention relates to the field of information handling systems. In one aspect, the present invention relates to a method and apparatus for expediting data retrieval from a storage device, such as a hard disk drive, during startup operations.
2. Description of the Related Art
As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option available to users is information handling systems. An information handling system generally processes, compiles, stores and/or communicates information or data for business, personal, or other purposes, thereby allowing users to take advantage of the value of the information. Because technology and information handling needs and requirements vary between different users or applications, information handling systems may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated and how quickly and efficiently the information may be processed, stored or communicated. The variations in information handling systems allow for information handling systems to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage or global communications. In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store and communicate information and may include one or more computer systems, data storage systems, and networking systems.
Information handling systems are well known in the art, and include examples such as personal computers, servers, laptop computer with docking stations, and other computer systems. Information handling systems in general, and Dell computer systems in particular, have attained widespread use throughout the world in providing computing products for a wide range of personal and business needs. A personal computer system can typically be defined as a desktop, floor standing, or a portable microcomputer that is comprised of a system unit having one or more central processing units (CPU) and associated volatile and non-volatile memory, including random access memory (RAM) and Basic Input Output System (BIOS) memory. Typically, a personal computer system also includes additional system and/or peripheral devices, such as, by way of example, a video display controller, a video display terminal (also known as a “system monitor”), a keyboard, one or more diskette drives, a pointer device, and an optional printer. Other system and/or peripheral devices typically connected to personal computer systems include one or more fixed storage devices, such as hard disk drive devices, external storage devices, Redundant Arrays of Inexpensive Disks (RAID) systems, ATA hard drives and the like. While the system and/or peripheral devices, such as storage devices, may include a disk cache memory for storing recently used data, theses technologies do not span a power loss event at the storage device. As a consequence, “boot up” operations that occur during startup can be impeded with such conventional systems which must wait for the devices to be operational before boot up operations can be completed.
In particular, when a user activates a computer power switch, or presses a reset button, the computer “boots” itself. Booting initiates an automatic start program routine that clears memory, executes diagnostics by executing a Power-On Self Test (POST) which checks the hardware (memory, Hard Drive Controllers, CPU, etc.), loads a computer operating system software program into memory from hard disk storage or other storage devices such as CD ROM, and executes other well known routines that prepare the computer for operation. This process is initiated by executing a set of programs called the Basic Input Output System (BIOS) code that is stored in non-volatile memory of the computer. The BIOS facilitates the transfer of data and instructions between a CPU and peripheral devices such as disk drives. Computer systems may be designed to perform functional tests from the BIOS every time the computer is turned on.
In operation, the BIOS program initializes all aspects of an information handling system, from CPU registers to device controllers to memory contents. The BIOS program must know how to load an operating system and to start execution of the operating system. To load the operating system, the bootstrap program typically starts by retrieving and loading a series of loading mechanics or modules to retrieve the operating system code from a storage device and load the operating system code into RAM within the information handling system. For example, with PC systems, the BIOS program starts by locating a master boot record (MBR), which stores the configurable aspects of the bootstrap program. The MBR is typically stored at a fixed location, such as the first sector of the hard drive disk or CD-ROM. Upon executing the MBR program, the BIOS program next checks for a boot loader program (or pointer thereto) in the MBR and then executes the boot loader program to determine what operating system to load and where on the storage device to load it from. The boot loader program is programmed with the location on the storage device of a kernel, which the boot loader then executes to complete loading of the operating system code. Alternatively, the boot loader program may be programmed with the location of a chainloader which is used to look for other boot loader programs that are used to boot other operating systems. As the kernel is loaded, the BIOS program transfers control to an initial address provided by the operating system kernel, and the operating system is loaded into RAM within the information handling system. Once loaded and initialized, the operating system controls the execution of programs and may provide services such as resource allocation, scheduling, input/output control and data management.
With existing personal computer systems, the BIOS program completes its POST diagnostics tests and is often ready to begin data retrieval from a data storage device before the device is operational. For example, FIG. 1 shows that the BIOS program may be prepared to begin loading the operating system code (at vertical line 50) before the hard drive (where the operating system code is stored) is ready to be accessed (as indicated at vertical line 54). As a consequence, the BIOS stalls (delay 56) while waiting for the hard drive to be operational, thereby inducing a longer boot time. Such a delay contributes to the impression that the personal computer is slow to start up. Therefore, a need exists for methods and/or apparatuses for improving the system boot up operations to quickly and efficiently provide data from system and/or peripheral devices, such as storage devices. Further limitations and disadvantages of conventional systems will become apparent to one of skill in the art after reviewing the remainder of the present application with reference to the drawings and detailed description which follow.